Eu faria de um modo mais facil e simples:
local delay, storage = 60, 2737 exhaustion.set(cid, storage, delay)
Por XxPaaulinhoOxX, 05 de jan. de 2013 em Scripts
Eu faria de um modo mais facil e simples:
local delay, storage = 60, 2737 exhaustion.set(cid, storage, delay)
info
Grupo: Campones
Registrado: 19/12/12
Posts: 47
Reputação: +3

dessa forma não importa se o player der logout a storage vai trocar? Mesmo ele offline?
Mesmo se ele der logout, ficara com o exhauti. E para checar o tempo que resta você usa a estrutura seguinte:
local tsm = {
storage = 2338,
time = function()return exhaustion.get(cid, storage)end,
}
if tsm.time(cid, tsm.storage) < 10 then
print("SmiX é lindo")
end
Acima acontece o seguinte; se o tempo da storage for menor que 10 segundo ele manda printar, uma verdade, "SmiX é lindo".
info
Grupo: Campones
Registrado: 19/12/12
Posts: 47
Reputação: +3

AHH ! Então se eu entendi ..
local time = function()return exhaustion.get(cid, 12345)end, setPlayerStorageValue(cid, 12345, 1) exhaustion.set(cid, 12345, 60 * 1000) print(“Faltam”..time..”segundos.”) if time <= 0 then setPlayerStorageValue(cid, 12345, -1) end
depois de passado os 60 segundos então o meu storage 12345 voltaria para valor -1 né?
e o exhaustion.get retorna o valor em segundos ?
info
Grupo: Príncipe
Registrado: 19/08/10
Posts: 4k
Reputação: +1.1k
Gênero: Masculino

setPlayerStorageValue(cid, 12345, 1) --n precisa disso exhaustion.set(cid, 12345, 60 * 1000) --tem q ser em SEGs no caso soh 60
quando acaba ele n volta ela pra -1.. ela continua com o os.time()+60
info
Grupo: Campones
Registrado: 19/12/12
Posts: 47
Reputação: +3

local time = function()return exhaustion.get(cid, 12345)end exhaustion.set(cid, 12345, 60) if time <= 0 then setPlayerStorageValue(cid, 12345, -1) else print(“Faltam”..time..”segundos.”) end
assim, quando a variavel time retornasse 0 iria entrar em ação a função setPlayerStorageValue ? trocando meu storage para o valor de -1? Senão apenas mandaria printar o tempo restante não .. ?
info
Grupo: Príncipe
Registrado: 19/08/10
Posts: 4k
Reputação: +1.1k
Gênero: Masculino

sim esta correto.. mas se o player n tiver online vai da erro '--' mas fazendo esse tpw de verificaçao, n tem problema da variavel ficar diferente de -1
info
Grupo: Campones
Registrado: 19/12/12
Posts: 47
Reputação: +3

se ele não estiver online então não vai setar a storage para -1?? porque oque eu preciso é realmente isso, quando acabasse o tempo que a storage tomasse o valor que EU DETERMINAR independente de ele estar online ou offline tendeo ?
Daria certo eu criar uma function onLogin?(e no caso onde eu colocaria ela? creaturescripts?) que verificasse se o player está com tal storage e se o exhaustion.get daquele storage já chegou ao fim ?
tipo assim:
function onLogin(cid)
local time = function() return exhaustion.get(cid, 12345) end
if getPlayerStorageValue(12345, 1) then
if time <= 0 then
setPlayerStorageValue(cid, 12345, 1)
else
print("Ainda faltam "..time.." segundos.")
end
else
return FALSE
end
end
sim é muita pergunta ;S
obrigado pela paciência x)
Editado Janeiro 5 por XxPaaulinhoOxX
Não intendi muito bem, mais eu fiz da seguinte forma: Se o player estiver com a storage "12345" no valor 1 o script passara para a próxima checagem e mostrara ao player quanto tempo ele tem de exhaustion.
function onLogin(cid)
if getPlayerStorageValue(cid, 12345) == 1 then
local x = exhaustion.get(cid, 12346)
if not x then
x = 0
end
if x > 0 then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "The exhaustion is in "..x.." seconds.")
end
end
end
info
Grupo: Infante
Registrado: 04/03/11
Posts: 1.6k
Reputação: +393
Char no Tibia: No Have

Ue porque se lanço uma varivel x.
E depois seto o valor 0.
function onLogin(cid) if getPlayerStorageValue(cid, 12345) == 1 then local x = exhaustion.get(cid, 12346) if x then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "The exhaustion is in "..x.." seconds.") end end return false end
Editado Janeiro 5 por caotic
Porque o player não começa com o exhaustion, então lancei o "if not x then" para ele começar com o exhaustiom no valor 0, só esqueci o "exhaustion.set"...
function onLogin(cid) if getPlayerStorageValue(cid, 12345) == 1 then local x = exhaustion.get(cid, 12346) or 0 exhaustion.set(cid, 12346, 60) if x > 0 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "The exhaustion is in "..x.." seconds.") end end end
Editado Janeiro 5 por SmiX
info
Grupo: Príncipe
Registrado: 19/08/10
Posts: 4k
Reputação: +1.1k
Gênero: Masculino

poderia por soh..
local x = exhaustion.get(cid, 12346) or 0
info
Grupo: Marquês
Registrado: 22/07/12
Posts: 1.1k
Reputação: +400
Gênero: Masculino
Char no Tibia: Luck Oake

Porque o player não começa com o exhaustion, então lancei o "if not x then" para ele começar com o exhaustiom no valor 0, só esqueci o "exhaustion.set"...
function onLogin(cid) if getPlayerStorageValue(cid, 12345) == 1 then local x = exhaustion.get(cid, 12346) or 0 exhaustion.set(cid, 12346, 60) if x > 0 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "The exhaustion is in "..x.." seconds.") end end end
Mas se você vai setar o valor da exhaust como 60 depois, então pra quê isso?
local x = exhaustion.get(cid, 12346) or 0
@Topic
A propósito, usar onLogin e return false não é muito boa ideia, vai impedir o player de fazer login. O que seria melhor fazer é usar onLogout.
function onLogout(cid) if getPlayerStorageValue(cid, 12345) == 1 then if exhaustion.get(cid, 12346) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "The exhaustion is in "..exhaustion.get(cid, 12346).." seconds.") return false end end return true end
A propósito, o player pode fazer logout com a exhaustion que não vai dar erro se ela acabar com ele offline. Usei um sistema parecido com esse no Vampire System, em que se o player não se alimentar depois de x horas ele evolui o nível de vampirismo, e se o player estiver offline quando esse tempo acabar, quando ele logar o script termina de ser executado.
Editado Janeiro 6 por LuckOake
info
Grupo: Campones
Registrado: 19/12/12
Posts: 47
Reputação: +3

Agoraa eu entendi !
Dúvida Sanada !!
info
Grupo: Campones
Registrado: 19/12/12
Posts: 47
Reputação: +3
Então galera eu queria colocar uma especie de delay em certa parte de um script meu .
Uu tentei fazer trocando a storage, e fazendo um addEvent que trocasse a storage denovo para o valor inicial . Porém se o player deslogar antes do addEvent não troca, ficando com a storage que eu não quero .
por exemplo:
Se ele deslogar antes dos 60 segundos ele permaneceria com a storage 12345 com valor 1. Queria saber se tem algum outro jeito de colocar um exausted? ou uma forma de se o player deslogar o tempo continuar correndo? ou pausar esses tempo e recomeçar daonde parou quando o player logar?
Editado Janeiro 5 por XxPaaulinhoOxX